// 封装一个倒计时函数

// 要求:
// const {time, start, stop} = useCountDown()
// time: 响应式的数据 用来显示当前计数
// start: 方法 正式开启倒计时  调用这个函数的时候决定当前倒计时的初始值是多少
// stop: 方法 停止倒计时

// 倒计时的核心逻辑: 每隔一秒中 time少一位  (定时器 time--)

// vueUse  一个方法: 每个一定时间执行一个我们自己的函数

import { ref, computed } from 'vue'
import { useIntervalFn } from '@vueuse/core'
import dayjs from 'dayjs'
function useCountDown () {
  const time = ref(0)
  // 格式化操作
  // xx分xx秒  dayjs  unix() 处理成秒  format('mm分ss秒') 格式化方法
  // 每个一秒钟 执行一下your function
  const formatTime = computed(() => {
    return dayjs.unix(time.value).format('mm分ss秒')
  })
  const { pause, resume } = useIntervalFn(() => {
    /* your function */
    if (time.value === 1) {
      stop()
    }
    time.value--
  }, 1000)
  // 开始 初始值放到这里更加灵活 可以不依赖必须在setup中调用  在异步请求之后可以手动调用start开启倒计时
  function start (count) {
    // 先初始化
    time.value = count
    // 开始倒计时
    resume()
  }
  // 暂停
  function stop () {
    pause()
  }
  return {
    time,
    start,
    stop,
    formatTime
  }
}

export default useCountDown
